home *** CD-ROM | disk | FTP | other *** search
- #include <exec/exec.h>
- #include <dos/dosextens.h>
- #include <libraries/dos.h>
- #include <workbench/workbench.h>
- #include <clib/alib_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/icon_protos.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "aclvl.h"
- struct Commands {
- UBYTE AcLvl[100],
- SerDevUnit;
- char SerDev[40],
- NEW_UserPW[15];
- long OpeningBaud;
- BYTE TaskPri;
- char ConfName[9][60],
- ConfLoc[9][60],
- BBSName[41],
- BBSLoc[41],
- SysopName[41];
- UBYTE PSAcLvl[6],
- PSRType[6],
- PSRatio[6];
- long PSDBytes[6],
- PSTime[6];
- char PSCnfAc[6][10],
- MInit[101],
- MReset[31],
- MRing[31],
- MAnswer[31],
- MC300[31],
- MC1200[31],
- MC2400[31],
- MC4800[31],
- MC9600[31],
- MC19200[31];
- short NumConf;
- char SysPass[31],
- RemotePass[31];
- USHORT BaudTimes[10];
- char Pad[18];
- };
- struct StartOption
- {
- SHORT LeftEdge;
- SHORT TopEdge;
- SHORT Width;
- SHORT Height;
- int BitPlanes;
- BOOL StatBar;
- BOOL Interlace;
- BOOL DupeCheck;
- BOOL QLogon;
- BOOL TakeCredits;
- BOOL SeenIt;
- BOOL TrapDoor;
- BOOL Iconify;
- BOOL RadBoogie;
- BOOL A2232;
- BOOL Toggles[20];
- char Logoff[80];
- char ShutDown[80];
- char CycleLock[80];
- char RamPen[80];
- char BBSConfig[80];
- char FilesNot[80];
- char UserData[80];
- char UserKey[80];
- char OffHook[80];
- char PubScreen[80];
- APTR MasterSemi;
- APTR SingleSemi;
- };
-
- extern struct Commands *Cmds[];
- extern struct StartOption *Sopt[];
- extern BOOL NodeIdle[];
- extern char StartNode[11][80];
- extern BOOL StartUp;
- struct FileLock *pdir = NULL;
- struct FileInfoBlock *dir_info = NULL;
- extern struct Library *IconBase;
- void free_pdir(void);
-
- #define StripInfo(x,y) x=strlen(y)-1; while(x>-1) { if(y[x]=='.') { y[x]='\0'; break; } x--; }
-
- #define CMDOPT(x,y) for(j=0;j<MaxNodes;j++) Cmds[j]->AcLvl[x]=y
- #define ACS(x) s=FindToolType(oldtooltypes,x)
- int GetFileName(char *path,char *buf);
- void GetIconBBSInfo(int MaxNodes)
- {
- struct DiskObject *dobj;
- char **oldtooltypes;
- char *s;
- register int j;
- register int i;
- int def;
- char temp[100];
- sprintf(temp,"%sCONFCONFIG",Cmds[0]->BBSLoc);
- dobj=GetDiskObject(temp);
- if(dobj)
- {
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"RELATIVE_CONFERENCES")) for(i=0;i<MaxNodes;i++) Sopt[i]->Toggles[1]=1;
- FreeDiskObject(dobj);
- }
- sprintf(temp,"%sACCESS",Cmds[0]->BBSLoc);
- dobj=GetDiskObject(temp);
- if(!dobj) return;
- oldtooltypes=dobj->do_ToolTypes;
- def=0;
- if(ACS("ACS.ACCOUNT_EDITING")) CMDOPT(ACCOUNT_EDITING,1); else CMDOPT(ACCOUNT_EDITING,def);
- if(ACS("ACS.COMMENT_TO_SYSOP")) CMDOPT(COMMENT_TO_SYSOP,1);else CMDOPT(COMMENT_TO_SYSOP,def);
- if(ACS("ACS.DOWNLOAD")) CMDOPT(DOWNLOAD,1); else CMDOPT(DOWNLOAD,def);
- if(ACS("ACS.ENTER_MESSAGE")) CMDOPT(ENTER_MESSAGE,1); else CMDOPT(ENTER_MESSAGE,def);
- if(ACS("ACS.FILE_LISTINGS")) CMDOPT(FILE_LISTINGS,1); else CMDOPT(FILE_LISTINGS,def);
- if(ACS("ACS.JOIN_CONFERENCE")) CMDOPT(JOIN_CONFERENCE,1); else CMDOPT(JOIN_CONFERENCE,def);
- if(ACS("ACS.NEW_FILES_SINCE")) CMDOPT(NEW_FILES_SINCE,1); else CMDOPT(NEW_FILES_SINCE,def);
- if(ACS("ACS.PAGE_SYSOP")) CMDOPT(PAGE_SYSOP,1); else CMDOPT(PAGE_SYSOP,def);
- if(ACS("ACS.READ_MESSAGE")) CMDOPT(READ_MSG,1); else CMDOPT(READ_MSG,def);
- if(ACS("ACS.DISPLAY_USER_STATS")) CMDOPT(DISPLAY_USER_STATS,1); else CMDOPT(DISPLAY_USER_STATS,def);
- if(ACS("ACS.UPLOAD")) CMDOPT(UPLOAD,1); else CMDOPT(UPLOAD,def);
- if(ACS("ACS.VIEW_A_FILE")) CMDOPT(VIEW_A_FILE,1); else CMDOPT(VIEW_A_FILE,def);
- if(ACS("ACS.EDIT_USER_INFO")) CMDOPT(EDIT_USER_INFO,1); else CMDOPT(EDIT_USER_INFO,def);
- if(ACS("ACS.REMOTE_SHELL")) CMDOPT(REMOTE_SHELL,1); else CMDOPT(REMOTE_SHELL,def);
- if(ACS("ACS.ZIPPY_TEXT_SEARCH")) CMDOPT(ZIPPY_TEXT_SEARCH,1); else CMDOPT(ZIPPY_TEXT_SEARCH,def);
- if(ACS("ACS.OVERIDE_CHAT")) CMDOPT(OVERRIDE_CHAT,1); else CMDOPT(OVERRIDE_CHAT,def);
- if(ACS("ACS.EDIT_USER_NAME")) CMDOPT(EDIT_USER_NAME,1); else CMDOPT(EDIT_USER_NAME,def);
- if(ACS("ACS.EDIT_USER_LOCATION")) CMDOPT(EDIT_USER_LOCATION,1); else CMDOPT(EDIT_USER_LOCATION,def);
- if(ACS("ACS.EDIT_PHONE_NUMBER")) CMDOPT(EDIT_PHONE_NUMBER,1); else CMDOPT(EDIT_PHONE_NUMBER,def);
- if(ACS("ACS.EDIT_PASSWORD")) CMDOPT(EDIT_PASSWORD,1); else CMDOPT(EDIT_PASSWORD,def);
- if(ACS("ACS.OVERIDE_TIMES")) CMDOPT(OVERRIDE_TIMES,1); else CMDOPT(OVERRIDE_TIMES,def);
- if(ACS("ACS.SYSOP_READ")) CMDOPT(SYSOP_READ,1); else CMDOPT(SYSOP_READ,def);
- if(ACS("ACS.READ_BULLETINS")) CMDOPT(BULLETINS,1); else CMDOPT(BULLETINS,def);
- if(ACS("ACS.EALL_MESSAGES"))
- {
- for(i=0;i<MaxNodes;i++) Sopt[i]->RadBoogie=1;
- }
- else for(i=0;i<MaxNodes;i++) Sopt[i]->RadBoogie=def;
- FreeDiskObject(dobj);
- }
-
- void GetIconNodeInfo(int i)
- {
- struct DiskObject *dobj;
- char **oldtooltypes;
- char *s;
- char Basis[200];
- char FileName[200];
- char temp[100];
- int j;
- sprintf(Basis,"%sNode%d/Modem",Cmds[i]->BBSLoc,i);
- if(GetFileName(Basis,FileName))
- {
- StripInfo(j,FileName);
- sprintf(Basis,"%sNode%d/Modem/%s",Cmds[i]->BBSLoc,i,FileName);
- dobj=GetDiskObject(Basis);
- if(dobj!=NULL)
- {
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"MODEM.INIT")) strcpy(Cmds[i]->MInit,s);
- if(s=FindToolType(oldtooltypes,"MODEM.RESET")) strcpy(Cmds[i]->MReset,s);
- if(s=FindToolType(oldtooltypes,"MODEM.RING")) strcpy(Cmds[i]->MRing,s);
- if(s=FindToolType(oldtooltypes,"MODEM.ANSWER")) strcpy(Cmds[i]->MAnswer,s);
- if(s=FindToolType(oldtooltypes,"MODEM.OFFHOOK")) strcpy(Sopt[i]->OffHook,s);
- if(s=FindToolType(oldtooltypes,"MODEM.CALLERID-1")) Sopt[i]->Toggles[15]=1;
- if(s=FindToolType(oldtooltypes,"MODEM.CALLERID-2")) Sopt[i]->Toggles[16]=1;
- FreeDiskObject(dobj);
- }
- }
- sprintf(Basis,"%sNode%d/Serial",Cmds[i]->BBSLoc,i);
- if(GetFileName(Basis,FileName))
- {
- StripInfo(j,FileName);
- sprintf(Basis,"%sNode%d/Serial/%s",Cmds[i]->BBSLoc,i,FileName);
- dobj=GetDiskObject(Basis);
- if(dobj!=NULL)
- {
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"SERIAL.UNIT")) Cmds[i]->SerDevUnit=atoi(s);
- if(s=FindToolType(oldtooltypes,"SERIAL.BAUD")) Cmds[i]->OpeningBaud=atol(s);
- if(s=FindToolType(oldtooltypes,"SERIAL.DRIVER")) strcpy(Cmds[i]->SerDev,s);
- if(s=FindToolType(oldtooltypes,"SERIAL.A2232_PATCH")) Sopt[i]->A2232=TRUE;
- if(s=FindToolType(oldtooltypes,"SERIAL.NO_PURGELINE")) Sopt[i]->Toggles[11]=1;
- if(s=FindToolType(oldtooltypes,"SERIAL.REPURGE")) Sopt[i]->Toggles[12]=1;
- if(s=FindToolType(oldtooltypes,"SERIAL.LOGOFF_RESET")) Sopt[i]->Toggles[17]=1;
- if(s=FindToolType(oldtooltypes,"SERIAL.TRUE_RESET")) Sopt[i]->Toggles[0]=1;
- FreeDiskObject(dobj);
- }
- }
- sprintf(FileName,"%sNode%d/WINDOW.DEF",Cmds[i]->BBSLoc,i);
- dobj=GetDiskObject(FileName);
- if(dobj)
- {
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"WINDOW.LEFTEDGE")) Sopt[i]->LeftEdge=atoi(s);
- if(s=FindToolType(oldtooltypes,"WINDOW.TOPEDGE")) Sopt[i]->TopEdge=atoi(s);
- if(s=FindToolType(oldtooltypes,"WINDOW.HEIGHT")) Sopt[i]->Height=atoi(s);
- if(s=FindToolType(oldtooltypes,"WINDOW.WIDTH")) Sopt[i]->Width=atoi(s);
- if(s=FindToolType(oldtooltypes,"WINDOW.STATBAR")) Sopt[i]->StatBar=TRUE;
- if(s=FindToolType(oldtooltypes,"WINDOW.ICONIFIED")) Sopt[i]->Iconify=TRUE;
- if(s=FindToolType(oldtooltypes,"WINDOW.INTERLACE")) Sopt[i]->Interlace=TRUE;
- if(s=FindToolType(oldtooltypes,"WINDOW.TO_FRONT")) Cmds[i]->AcLvl[SCREEN_TO_FRONT]=1;
- if(s=FindToolType(oldtooltypes,"WINDOW.NUM_COLORS"))
- {
- j=atoi(s);
- switch(j)
- {
- case 0: Sopt[i]->BitPlanes=0; break;
- case 1:
- case 2: Sopt[i]->BitPlanes=1; break;
- case 3:
- case 4: Sopt[i]->BitPlanes=2; break;
- case 5:
- case 6:
- case 7:
- case 8: Sopt[i]->BitPlanes=3; break;
- default: Sopt[i]->BitPlanes=3; break;
- }
- }
- FreeDiskObject(dobj);
- }
- sprintf(FileName,"%sNode%d",Cmds[i]->BBSLoc,i);
- dobj=GetDiskObject(FileName);
- if(dobj)
- {
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"SYSTEM_PASSWORD")) strcpy(Cmds[i]->SysPass,s);
- if(s=FindToolType(oldtooltypes,"REMOTE_PASSWORD")) strcpy(Cmds[i]->RemotePass,s);
- if(s=FindToolType(oldtooltypes,"NEWUSER_PASSWORD")) strcpy(Cmds[i]->NEW_UserPW,s);
- if(s=FindToolType(oldtooltypes,"PRIORITY")) Cmds[i]->TaskPri=atoi(s);
- if(s=FindToolType(oldtooltypes,"QUIETNODE")) Sopt[i]->Toggles[9]=TRUE;
- if(s=FindToolType(oldtooltypes,"NODESTART"))
- {
- strcpy(Basis,s);
- sprintf(FileName,"%s %d",Basis,i);
- strcpy(&StartNode[i][0],FileName);
- StartUp=TRUE;
- }
-
- if(s=FindToolType(oldtooltypes,"IDLENODE")) NodeIdle[i]=1;
- if(s=FindToolType(oldtooltypes,"TRAPDOOR")) Sopt[i]->TrapDoor=TRUE;
- if(s=FindToolType(oldtooltypes,"PLAYPEN")) strcpy(Sopt[i]->RamPen,s);
- if(s=FindToolType(oldtooltypes,"SENTBY_FILES")) Cmds[i]->AcLvl[SENTBY_FILES]=1;
- if(s=FindToolType(oldtooltypes,"CHAT_ON")) Cmds[i]->AcLvl[DEFAULT_CHAT_ON]=1;
- if(s=FindToolType(oldtooltypes,"CAPITOL_FILES")) Cmds[i]->AcLvl[CAPITOLS_in_FILE]=1;
- if(s=FindToolType(oldtooltypes,"SYSOP_CHAT_COLOR")) Cmds[i]->AcLvl[CHAT_COLOR_SYSOP]=atoi(s);
- if(s=FindToolType(oldtooltypes,"USER_CHAT_COLOR")) Cmds[i]->AcLvl[CHAT_COLOR_USER]=atoi(s);
- if(s=FindToolType(oldtooltypes,"KEEP_UPLOAD_CREDIT")) Cmds[i]->AcLvl[KEEP_UPLOAD_CREDIT]=atoi(s);
- if(s=FindToolType(oldtooltypes,"FREE_RESUMING")) Cmds[i]->AcLvl[ALLOW_FREE_RESUMING]=1;
- if(s=FindToolType(oldtooltypes,"CALLERS_LOG")) Cmds[i]->AcLvl[DO_CALLERSLOG]=1;
- if(s=FindToolType(oldtooltypes,"UD_LOG")) Cmds[i]->AcLvl[DO_UD_LOG]=1;
- if(s=FindToolType(oldtooltypes,"DOOR_LOG")) Sopt[i]->Toggles[2]=1;
- if(s=FindToolType(oldtooltypes,"START_LOG")) Sopt[i]->Toggles[3]=1;
- if(s=FindToolType(oldtooltypes,"NO_TIMEOUT")) Sopt[i]->Toggles[4]=1;
- if(s=FindToolType(oldtooltypes,"NO_MCI_MSG")) Sopt[i]->Toggles[5]=1;
- if(s=FindToolType(oldtooltypes,"BREAK_CHAT")) Sopt[i]->Toggles[7]=1;
- if(s=FindToolType(oldtooltypes,"NO_WILDCARD_EXPANSION")) Sopt[i]->Toggles[14]=0; else
- Sopt[i]->Toggles[14]=1;
- if(s=FindToolType(oldtooltypes,"DISABLE_QUICK_LOGONS")) Sopt[i]->QLogon=1;
- if(s=FindToolType(oldtooltypes,"FILESNOTALLOWED")) strcpy(Sopt[i]->FilesNot,s);
- if(s=FindToolType(oldtooltypes,"SCREENS")) strcpy(Sopt[i]->PubScreen,s); else
- {
- sprintf(temp,"%sNode%d/",Cmds[i]->BBSLoc,i); strcpy(Sopt[i]->PubScreen,temp);
- }
- FreeDiskObject(dobj);
- }
-
-
- }
- int GetFileName(char *path,char *buf)
- {
- int returnval=0;
- if ((dir_info =(struct FileInfoBlock *)AllocMem((long)sizeof(struct FileInfoBlock),0L)) == NULL)
- {
- Delay(300L);
- return(0);
- }
- if (! (pdir=(struct FileLock *)Lock(path,(ULONG)ACCESS_READ)) )
- {
- free_pdir();
- return(0);
- }
- if ( ! Examine((BPTR)pdir, dir_info) )
- {
- free_pdir();
- return(0);
- }
- if(ExNext((BPTR)pdir,dir_info))
- {
- if(dir_info->fib_DirEntryType < 0L )
- {
- returnval=1; strcpy(buf,dir_info->fib_FileName);
- }
- }
- free_pdir();
- FreeMem(dir_info,(long)sizeof(struct FileInfoBlock));
- return(returnval);
- }
- void free_pdir(void)
- {
- if ( pdir )
- {
- UnLock((BPTR)pdir);
- pdir=NULL;
- }
- return;
- }